pull: Add remotename:ref syntax
authorColin Walters <walters@verbum.org>
Tue, 21 Jan 2014 08:57:34 +0000 (08:57 +0000)
committerColin Walters <walters@verbum.org>
Tue, 21 Jan 2014 08:57:34 +0000 (08:57 +0000)
This is really the common case.

src/ostree/ot-builtin-pull.c
tests/pull-test.sh

index 7aa028a7f5c985e0482a7bc2113eeeea5c75cbe5..6d8ffc905b92f3c3c603697fff45860406ac0736 100644 (file)
@@ -36,7 +36,7 @@ ostree_builtin_pull (int argc, char **argv, OstreeRepo *repo, GCancellable *canc
 {
   GOptionContext *context;
   gboolean ret = FALSE;
-  const char *remote;
+  gs_free char *remote = NULL;
   OstreeRepoPullFlags pullflags = 0;
   GSConsole *console = NULL;
   gs_unref_ptrarray GPtrArray *refs_to_fetch = NULL;
@@ -53,14 +53,28 @@ ostree_builtin_pull (int argc, char **argv, OstreeRepo *repo, GCancellable *canc
       ot_util_usage_error (context, "REMOTE must be specified", error);
       goto out;
     }
-  remote = argv[1];
 
-  if (argc > 2)
+
+  if (strchr (argv[1], ':') == NULL)
+    {
+      remote = g_strdup (argv[1]);
+      if (argc > 2)
+        {
+          int i;
+          refs_to_fetch = g_ptr_array_new ();
+          for (i = 2; i < argc; i++)
+            g_ptr_array_add (refs_to_fetch, argv[i]);
+          g_ptr_array_add (refs_to_fetch, NULL);
+        }
+    }
+  else
     {
-      int i;
+      char *ref_to_fetch;
       refs_to_fetch = g_ptr_array_new ();
-      for (i = 2; i < argc; i++)
-        g_ptr_array_add (refs_to_fetch, argv[i]);
+      if (!ostree_parse_refspec (argv[1], &remote, &ref_to_fetch, error))
+        goto out;
+      /* Transfer ownership */
+      g_ptr_array_add (refs_to_fetch, ref_to_fetch);
       g_ptr_array_add (refs_to_fetch, NULL);
     }
 
index 82e70042f485d5ff162e9dda92fe373ca1598b98..8231cefd0542c23cdb5c57246d47572b89de12e5 100755 (executable)
@@ -23,7 +23,9 @@ cd ${test_tmpdir}
 mkdir repo
 ${CMD_PREFIX} ostree --repo=repo init
 ${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin $(cat httpd-address)/ostree/gnomerepo
+# Try both syntaxes
 ${CMD_PREFIX} ostree --repo=repo pull origin main
+${CMD_PREFIX} ostree --repo=repo pull origin:main
 ${CMD_PREFIX} ostree --repo=repo fsck
 echo "ok pull"